package com.example.demo.demos.web.wx;

import lombok.extern.slf4j.Slf4j;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author：zhanghao
 * @name：ParseXml
 * @Date：2025/5/27 10:11
 */
@Slf4j
public class ParseXml {

    /**
     * @author: wwy
     * @description: 解析微信发来的请求（XML）
     * @date 2021/1/20
     * @param request
     * @return java.util.Map<java.lang.String,java.lang.String>
     ** java.util.Map<java.lang.String,java.lang.String>
     **/
    public static Map<String, String> parseXml(HttpServletRequest request) throws Exception {
        // 将解析结果存储在HashMap中
        Map<String, String> map = new HashMap<String, String>();
        // 从request中取得输入流
        InputStream inputStream = request.getInputStream();
        if(null==inputStream)return map;
        // 读取输入流
        SAXReader reader = new SAXReader();
        Document document = reader.read(inputStream);
        // 得到xml根元素
        Element root = document.getRootElement();
        // 得到根元素的所有子节点
        List<Element> elementList = root.elements();
        // 遍历所有子节点
        for (Element e : elementList) {
            map.put(e.getName(), e.getText());
            log.info("name：" + e.getName() + "   value："+map.get(e.getName()));
        }
        // 释放资源
        inputStream.close();
        return map;
    }
}

